Android — 节目直播案例开发
前言
现在直播行业可谓是如火如荼。本文是看慕课网视频 — Android节目直播案例开发 所学过程中记录的笔记。视频中用的是 Vitamio ,事实上,维他密虽然简单,但是已经几年没更新了。现在都用哔哩哔哩开源库 ijkplayer 做视频播放。ijkplayer 导入依赖包总是卡住,所以我使用了基于 ijkplayer 简单封装的开源库 jjdxm_ijkplayer 。
我从网上找一些直播源,做还是很简单的,主要是了解一些这方面的知识。
效果如下:( 实际很高清 )
源码:https://github.com/Omooo/VitamioDemo
直播原理以及协议
直播本质:实时推送/拉取过来的音视频数据
直播相关协议:
RTMP ( Real Time Messaging Protocal ) 实时消息传输协议
RTMP 协议是一个互联网 TCP/IP 五层体系结构中应用层协议
RTMP 协议可以用来推送又可以用来直播
RTMP 协议中基本的数据单元称为消息 ( Message )
测试地址:香港卫视 rtmp://live.hkstv.hk.lxdns.com/live/hks
FLV ( Flash Video )
FLV 协议是在大块的视频帧和音视频头部加入一些标记头信息
FLV 协议在延迟表现和大规模并发方面很成熟
FLV 协议非常适合于手机端 APP 直播协议
HLS ( HTTP Live Streaming )
苹果推出的解决方案,将视频分成 5-10 秒的视频小分片,然后用 m3u8 索引表进行管理,HLS在iPhone和大部分Android手机浏览器上的支持非常好,常用于像QQ和微信朋友圈的URL分享。
m3u8 概念:以UTF-8编码格式的m3u文件,m3u文件记录了一个索引的纯文本文件,打开它时,播放软件并不是播放它,而是根据它里面的索引找到对应的音视频网络地址进行播放。
m3u8优点是什么?
主要是可以做多码率的适配,根据网络带宽,客户端会选择一个适合自己码率的文件进行播放,保证视频流的流畅。
直播源测试
直播源论坛:http://www.hdpfans.com/
直播源测试:VLC
Vitamio 框架简介
Android 平台音视频播放组件,支持播放主流格式的音视频、网络视频流 ( http/rtsp/mms )